﻿using System;
using System.Data;
using System.Text;
using System.Collections.Generic;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Security;
using GC2.ExceptionHandler;
using System.Security.Principal;
using GC2.Entities.Comunes;
using GC2.Entities.Admin;
using GC2.Bussines.BMAdmin;

/// <summary>
/// Descripción breve de GenericPage
/// </summary>
public class GenericPage : System.Web.UI.Page
{
    private ExceptionConstructor exNew = new ExceptionConstructor();
    //Configuration aa = new Configuration();

    /// <summary>
    /// Permisos de la Interfaz
    /// items de formularios ( Url actual: codigo termina en cero)
    /// los subsiguientes corresponden a controles 
    /// CB 16-08-2007
    /// </summary>
    public enum UI_Permissions
    {
        frmAplicaciones = 1,      //    10  BMSeguridad_AdministracionAplicaciones
        frmGrupos       = 2,      //    20  BMSeguridad_AdministracionGrupos
        frmPermisos     = 3,      //    30  BMSeguridad_AdministracionPermisos
        frmRoles        = 4,      //    40  BMSeguridad_AdministracionRoles
        frmUsuarios     = 5,      //    50  BMSeguridad_AdministracionUsuarios
        frmDemoPermisos = 6,      //    60  BMDemoPermisos
        ctrlDemoBtnAgregar  = 7,  //        601, BMDemoPermisos_btnDosAgrega
        ctrlDemoBtnBorrar   = 8,  //        602, BMDemoPermisos_btnDosBorrar

    }

    private string _userName;
    private bool _isAuthenticated;
    public string LoguedUserName
    {
        get { return _userName; }
        set { _userName = value; }
    }
    public bool IsAuthenticated
    {
        get { return _isAuthenticated; }
        set { _isAuthenticated = value; }
    }


    private string connection = "comercial";
    public string Connection
    {
        get { return connection; }
        set { connection = value; }
    }
    public DateTime FechaNula = Convert.ToDateTime("01/01/1801");

    #region Constructor de la clase
    /// <summary>
    /// <Autor>Ariel Serlin</Autor>
    /// GenericPage
    /// El constructor de esta clase se ejecuta en la peticion de cada pagina
    /// en caso de que la aplicacion sea llamada desde IIS el _userName debe ser sacado del logon_user
    /// en caso de que la aplicacion sea ejecutada en entorno de desarrollo debe usar identity de windows
    /// </summary>

    public GenericPage()
    {

    }
    #endregion

    #region ErrorUI  Manejo de Excepciones
    /// <ErrorUI>
    /// Rutina de Error para Interfaz de Usuario
    /// CB 06-07-2007
    /// </ErrorUI>
    /// <param name="ex"></param>
    public void ErrorUI(Exception ex)
    {
        ExceptionConstructor exConstructor = new ExceptionConstructor();
        string exTemp = ex.ToString();
        string control = (ex.ToString()).Remove(33);
        string InfoError;

        if (control == "System.Exception:  -- > Original ")
        {
            InfoError = exConstructor.exBus(exTemp);
        }
        else
        {
            StringBuilder sb = new StringBuilder();

            sb.Append(" -- > Original Exception: User Interface");
            sb.Append(Environment.NewLine);
            sb.Append(ex.ToString());
            sb.Append(Environment.NewLine);
            sb.Append((exNew.ProcessUnhandledException(ex)).ToString());

            InfoError = sb.ToString();
        }

        Session["Error"] = InfoError;
        Session["UrlOrigen"] = "~/BMSeguridad/Default.aspx";
        Response.Redirect("~/Error.aspx", false);
    }
    #endregion
    
    #region Buscar Usuario de Windows
    //public void AutenticacionUsuario()
    //{
    //    string fulWithDomain;
    //    int index;
    //    BMUsuarios bmusuarios = new BMUsuarios();
    //    Usuarios usuario = new Usuarios();
    //    UsuarioAutenticado usuarioAutenticado = new UsuarioAutenticado();
    //    bool autenticacionSession;
    //    _userName = Request.ServerVariables["logon_user"];

    //    fulWithDomain = _userName;
    //    index = fulWithDomain.IndexOf("\\") + 1;
    //    _userName = fulWithDomain.Remove(0, index);

    //    if (Session["sAutenticado"] != null)
    //    {
    //        autenticacionSession = bool.Parse(Session["sAutenticado"].ToString());
    //    }
    //    else
    //    {
    //        Session["sAutenticado"] = "";
    //        autenticacionSession = false;
    //    }


    //    if (autenticacionSession != true)
    //    {
    //        usuario.Login = _userName;
    //        usuarioAutenticado = bmusuarios.BMAutenticacionUsuario(usuario);
    //    }
    //    else
    //    {
    //        usuarioAutenticado.Autenticado = true;
    //    }


    //    if (!usuarioAutenticado.Autenticado)
    //    {
    //        string InfoError = "El usuario  " + LoguedUserName + " no tiene permisos de administrador sobre el modulo: Seguridad";
    //        Session["Error"] = InfoError;
    //        Session["UrlOrigen"] = "~/Error.aspx";
    //        Session["sAutenticado"] = "false";

    //        Response.Redirect("~/Error.aspx", false);

    //    }
    //    else
    //    {
    //        Session["sAutenticado"] = "true";
    //        // se agregan estas lineas CB 13-08-2007
    //        usuario.Login = _userName;
    //        usuario = bmusuarios.BMUsuarioSearch(usuario)[0];
    //        Session["Id_Usuario"] = usuario.Id_Usuario;
    //    }

    //}
    #endregion

    #region ControlPermisos
    /// <summary>
    /// Control de permisos 
    /// en base a IdUsuario e Idermiso, devuelve S (si) N (no) X (parametro no valido)
    /// CB 10-08-2007
    /// </summary>
    /// <param name="IdPermiso"></param>
    /// <param name="IdUsuario"></param>
    public string ControlPermisos(int IdPermiso, int IdUsuario)
    {
        //BMPermisos bmPermisos = new BMPermisos(connection);
        //string strPermiso = bmPermisos.BMPermisosTienePermiso( IdPermiso, IdUsuario); 
     
        //if (strPermiso != "S")
        //{
        //    string InfoError = "Usuario sin permiso para esta Aplicación";

        //Session["Error"] = InfoError;
        //Session["UrlOrigen"] = "~/Seguridad/Default.aspx";
        //}
        string strPermiso = "";
        return strPermiso;
    }
    #endregion

    #region SetearCultura
    public void SetearCultura()
    {
        try
        {
            System.Globalization.CultureInfo cultura = new System.Globalization.CultureInfo("es-AR");
            cultura.NumberFormat.NumberDecimalSeparator = ".";
            cultura.NumberFormat.NumberGroupSeparator = ",";
            cultura.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
            System.Threading.Thread.CurrentThread.CurrentCulture = cultura;
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region UsuarioActual
    public Usuarios UsuarioActual()
    {
        Usuarios usuario = new Usuarios();
        try
        {
            usuario = (Usuarios)Session["UsuarioActual"];
            usuario.Cliente = "comercial";
        }
        catch (Exception ex) { ErrorUI(ex); }
        return usuario;
    }
    #endregion

    //#region CajaAbierta
    //public Cajas CajaAbierta()
    //{
    //    Cajas oCaja = new Cajas();
    //    try
    //    {
    //        Usuarios usuario = UsuarioActual();
    //        BMCajas bmCajas = new BMCajas(Connection);
    //        oCaja.Id_Usuario = usuario.Id_Usuario;
    //        oCaja = bmCajas.BMCajasAbiertaByUsuario(oCaja);
    //        Session["Caja"] = oCaja;
    //    }
    //    catch (Exception ex) { ErrorUI(ex); }
    //    return oCaja;
    //}
    //#endregion

    #region SetearConexion
    public void SetearConexion()
    {
       try
        {
            if (Session["UsuarioActual"] != null)
            {
                Connection = ((Usuarios)Session["UsuarioActual"]).Cliente;
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region SetearFecha
    public string SetearFecha()
    {
        string sFecha = "01/";
        try
        {
            DateTime dHoy = DateTime.Now.Date;
            // CAMBIAR es para el demo
            sFecha += "01";
            //sUno += dHoy.Month.ToString();
            sFecha+= "/";
            sFecha += dHoy.Year.ToString();
        }
        catch (Exception ex) { ErrorUI(ex); }
        return sFecha; 
    }
    #endregion

    #region ListaMeses
    public List<Meses> ListaMeses()
    {
        List<Meses> listaMeses = new List<Meses>();
        try
        {
            Meses mes1 = new Meses();
            mes1.Mes = 1;
            mes1.Nombre = "Enero";
            listaMeses.Add(mes1);
            Meses mes2 = new Meses();
            mes2.Mes = 2;
            mes2.Nombre = "Febrero";
            listaMeses.Add(mes2);
            Meses mes3 = new Meses();
            mes3.Mes = 3;
            mes3.Nombre = "Marzo";
            listaMeses.Add(mes3);
            Meses mes4 = new Meses();
            mes4.Mes = 4;
            mes4.Nombre = "Abril";
            listaMeses.Add(mes4);
            Meses mes5 = new Meses();
            mes5.Mes = 5;
            mes5.Nombre = "Mayo";
            listaMeses.Add(mes5);
            Meses mes6 = new Meses();
            mes6.Mes = 6;
            mes6.Nombre = "Junio";
            listaMeses.Add(mes6);
            Meses mes7 = new Meses();
            mes7.Mes = 7;
            mes7.Nombre = "Julio";
            listaMeses.Add(mes7);
            Meses mes8 = new Meses();
            mes8.Mes = 8;
            mes8.Nombre = "Agosto";
            listaMeses.Add(mes8);
            Meses mes9 = new Meses();
            mes9.Mes = 9;
            mes9.Nombre = "Septiembre";
            listaMeses.Add(mes9);
            Meses mes10 = new Meses();
            mes10.Mes = 10;
            mes10.Nombre = "Octubre";
            listaMeses.Add(mes10);
            Meses mes11 = new Meses();
            mes11.Mes = 11;
            mes11.Nombre = "Noviembre";
            listaMeses.Add(mes11);
            Meses mes12 = new Meses();
            mes12.Mes = 12;
            mes12.Nombre = "Diciembre";
            listaMeses.Add(mes12);

        }
        catch (Exception ex) { ErrorUI(ex); }
        return listaMeses;
    }
    #endregion

    //#region Mascaras
    //public string Mascaras(string modelo)
    //{
    //    string sMascara = string.Empty;

    //    StringBuilder sb = new StringBuilder();
    //    string sCliente = ((Usuarios)Session["UsuarioActual"]).Cliente;
    //    sb.Append(sCliente);
    //    sb.Append(modelo);
    //    try
    //    {
    //        sMascara = System.Configuration.ConfigurationManager.AppSettings[sb.ToString()].ToString();
    //    }
    //    catch
    //    {
    //        sMascara = string.Empty;
    //    }

    //    return sMascara;
    //}
    //#endregion

    #region ListaProvincias
    public List<Provincias> ListaProvincias()
    {
        List<Provincias> listaProvincias = new List<Provincias>();
        try
        {
            Provincias prov1 = new Provincias();
            prov1.ProvCod = 1;
            prov1.Provincia = "Capital Federal";
            listaProvincias.Add(prov1);
            Provincias prov2 = new Provincias();
            prov2.ProvCod = 2;
            prov2.Provincia = "Buenos Aires";
            listaProvincias.Add(prov2);
            Provincias prov3 = new Provincias();
            prov3.ProvCod = 3;
            prov3.Provincia = "Córdoba";
            listaProvincias.Add(prov3);
            Provincias prov4 = new Provincias();
            prov4.ProvCod = 4;
            prov4.Provincia = "Catamarca";
            listaProvincias.Add(prov4);
            Provincias prov5 = new Provincias();
            prov5.ProvCod = 5;
            prov5.Provincia = "Chaco";
            listaProvincias.Add(prov5);
            Provincias prov6 = new Provincias();
            prov6.ProvCod = 6;
            prov6.Provincia = "Chubut";
            listaProvincias.Add(prov6);
            Provincias prov7 = new Provincias();
            prov7.ProvCod = 7;
            prov7.Provincia = "Corrientes";
            listaProvincias.Add(prov7);
            Provincias prov8 = new Provincias();
            prov8.ProvCod = 8;
            prov8.Provincia = "Entre Ríos";
            listaProvincias.Add(prov8);
            Provincias prov9 = new Provincias();
            prov9.ProvCod = 9;
            prov9.Provincia = "Formosa";
            listaProvincias.Add(prov9);
            Provincias prov10 = new Provincias();
            prov10.ProvCod = 10;
            prov10.Provincia = "Jujuy";
            listaProvincias.Add(prov10);
            Provincias prov11 = new Provincias();
            prov11.ProvCod = 11;
            prov11.Provincia = "La Pampa";
            listaProvincias.Add(prov11);
            Provincias prov12 = new Provincias();
            prov12.ProvCod = 12;
            prov12.Provincia = "La Rioja";
            listaProvincias.Add(prov12);
            Provincias prov13 = new Provincias();
            prov13.ProvCod = 13;
            prov13.Provincia = "Mendoza";
            listaProvincias.Add(prov13);
            Provincias prov14 = new Provincias();
            prov14.ProvCod = 14;
            prov14.Provincia = "Misiones";
            listaProvincias.Add(prov14);
            Provincias prov15 = new Provincias();
            prov15.ProvCod = 15;
            prov15.Provincia = "Neuquen";
            listaProvincias.Add(prov15);
            Provincias prov16 = new Provincias();
            prov16.ProvCod = 16;
            prov16.Provincia = "Río Negro";
            listaProvincias.Add(prov16);
            Provincias prov17 = new Provincias();
            prov17.ProvCod = 17;
            prov17.Provincia = "Salta";
            listaProvincias.Add(prov17);
            Provincias prov18 = new Provincias();
            prov18.ProvCod = 18;
            prov18.Provincia = "San Juan";
            listaProvincias.Add(prov18);
            Provincias prov19 = new Provincias();
            prov19.ProvCod = 19;
            prov19.Provincia = "Santa Cruz";
            listaProvincias.Add(prov19);
            Provincias prov20 = new Provincias();
            prov20.ProvCod = 20;
            prov20.Provincia = "Santa Fe";
            listaProvincias.Add(prov20);
            Provincias prov21 = new Provincias();
            prov21.ProvCod = 21;
            prov21.Provincia = "Santiago del Estero";
            listaProvincias.Add(prov21);
            Provincias prov22 = new Provincias();
            prov22.ProvCod = 22;
            prov22.Provincia = "Tierra del Fuego";
            listaProvincias.Add(prov22);
            Provincias prov23 = new Provincias();
            prov23.ProvCod = 23;
            prov23.Provincia = "Tucumán";
            listaProvincias.Add(prov23);

        }
        catch (Exception ex) { ErrorUI(ex); }
        return listaProvincias;
    }
    #endregion

}
